<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>dayjs</title>
		<script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.6/plugin/isBetween.js"></script>
		<script>
		  dayjs.extend(window.dayjs_plugin_isBetween)
		</script>
	</head>
	<body>
		<script>
			
			// 原文：https://blog.csdn.net/halo1416/article/details/124298324
			// 1. 初始化日期 / 时间
			console.log(dayjs().format('YYYY-MM-DD')); //2022-10-27
			console.log(dayjs().format('YYYY-MM-DD HH:mm:ss')); //2022-10-27 15:21:56

			// 2.格式化日期 / 时间
			console.log("value可以是任意格式的日期字符串、时间戳:", dayjs(value = 1666856366520).format(
			'YYYY-MM-DD HH:mm:ss')); //value可以是任意格式的日期字符串、时间戳

			// 3. 加 / 减
			// dayjs().add / dayjs().subtract  代表在当前时间上去加减；
			// dayjs(value).add / dayjs(value).subtract 代表在指定时间（value）上去加减；

			console.log("当前时间上加上7天:", dayjs().add(7, 'day').format('YYYY-MM-DD'));
			console.log("当前时间上加上一月:", dayjs().add(1, 'month').format('YYYY-MM-DD'));

			console.log("当前时间上减2年:", dayjs().subtract(2, 'year').format('YYYY-MM-DD'));
			console.log("当前时间减去2个小时:", dayjs().subtract(2, 'hour').format('YYYY-MM-DD HH:mm:ss'));

			// 4. 获取某年某月的第一天或最后一天
			console.log("当前年的第一天:", dayjs().startOf('year').format('YYYY-MM-DD HH:mm:ss'))
			console.log("当前月的第一天:", dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss'))

			console.log("当前年的最后一天:", dayjs().endOf('year').format('YYYY-MM-DD HH:mm:ss'))
			console.log("当前月的最后一天:", dayjs().endOf('month').format('YYYY-MM-DD HH:mm:ss'))

			// 5. 获取星期几

			console.log("获取最近周六的日期:", dayjs().day(6).format('YYYY-MM-DD'))
			console.log("获取最近周日的日期 :", dayjs().day(0).format('YYYY-MM-DD'))

			// 6. 获取毫秒数
			console.log("获取指定日期毫秒数:", dayjs('2022-01-25').valueOf())
			console.log("获取当前日期毫秒数:", dayjs().valueOf())

			// 7. 获取时间差（默认输出的差值单位是毫秒）
			console.log("计算指定的两个日期（任意格式）之间相差时间(支持很多单位):", dayjs('2022-10-25').diff('2022-01-25', 'month'))

			// 8. 获取时、分、秒
			console.log('-----获取年', dayjs().year());
			console.log('-----获取月', dayjs().month());
			console.log('-----获取星期', dayjs().day());
			console.log('-----获取天', dayjs().date());
			console.log('-----获取小时', dayjs().hour());
			console.log('-----获取分钟', dayjs().minute());
			console.log('-----获取秒', dayjs().second());
			console.log('-----获取毫秒', dayjs().millisecond());

			// 9. 将毫秒转为时分秒
			const timestr = 1650447800731; // 毫秒值必须是number类型，如果是string，结果可能和你想的不一样
			console.log('将毫秒转为年-月-日 时:分:秒', dayjs(timestr).format('YYYY-MM-DD HH:mm:ss'));
			console.log('获取年', dayjs(timestr).year());
			console.log('获取月', dayjs(timestr).month());
			console.log('获取天', dayjs(timestr).date());
			console.log('获取时', dayjs(timestr).hour());
			console.log('获取分', dayjs(timestr).minute());

			// 10. 判断一个日期是否在另外一个日期之后 isAfter
			console.log('是否等于当前时间：', dayjs().isAfter(dayjs('2022-10-27'))) // true
			console.log('10isAfter', dayjs('2022-04-20').isAfter(dayjs('2022-04-21'))) // false
			console.log('10isAfter', dayjs('2022-04-20').isAfter(dayjs('2022-04-20'))) // 相同也为false
			
			// 11. 判断一个日期是否在另外一个日期之前 isBefore
			console.log('11isBefore', dayjs('2022-04-20').isBefore(dayjs('2022-04-21'))) // true
			console.log('11isBefore', dayjs('2022-04-20').isBefore(dayjs('2022-04-20'))) // 日期相同时也为false
			
			// 12. 判断两个日期是否相同 isSame
			console.log('判断两个日期是否相同1', dayjs().isSame(dayjs('2011-01-01')))  			// false
			console.log('判断两个日期是否相同2', dayjs('2022-04-20').isSame(dayjs('2022-04-21')))	// false
			console.log('判断两个日期是否相同3', dayjs('2022-04-20').isSame(dayjs('2022-04-20')))	// true
			
			// 13. 判断一个日期是否在两个日期之间 isBetween   此功能依赖IsBetween插件
			 console.log('isBetween', dayjs('2010-10-20').isBetween('2010-10-19', dayjs('2010-10-25')) )
			
		</script>
	</body>
</html>
